{{tag>ppa wiki:tutoriel gestionnaire_de_paquets}}

----

==== Pré-requis ====

Pour pouvoir suivre cette documentation un certain nombre de pré-requis sont nécessaires :

  * Avoir installer les paquets suivant : [[apt://debhelper,cdbs,lintian,build-essential,fakeroot,devscripts,pbuilder,dh-make,debootstrap|debhelper,cdbs,lintian,build-essential,fakeroot,devscripts,pbuilder,dh-make,debootstrap]].

====== Créer et administrer un PPA sur Launchpad ======

<note tip>Ce tutoriel indique comment créer et administrer un PPA.</note>

Ce tutoriel indique comment créer et administrer un ppa sur Launchpad dans le but de créer et fournir des paquets de votre logiciel à la communauté. Dans ce tutorial, nous utiliserons le programme [[:freetuxtv|FreetuxTV]] comme exemple.

Il est recommandé d'avoir lu la page de présentation sur les [[:ppa|Personal Package Archives]].

===== Création d'un compte Launchpad =====

La première étape constiste avant tout à vous créer un compte sur [[https://launchpad.net/|Launchpad]].

==== Signature du code de conduite ====

Lorsque votre compte est crée, vous devez signé le code de conduite de Lanchpad. Ceci consite en la récupération d'un certificat que vous devez signé avec une clé privé. Puis vous devez uploader, le code de conduite signé sur le serveur de Launchpad.

La procédure pour créer une clé PGP se trouve ici : https://help.launchpad.net/YourAccount/ImportingYourPGPKey

Une fois que vous avez renseigné l'empreinte de votre clé, retournez sur les paramètres de votre compte Launchpad.
Suivez les étapes pour signer, le code de bonne conduite.

Là, le plus chiant est fini.

===== Création du PPA =====

Une fois le code de conduite signé, vous pouvez créer un PPA depuis votre compte.

Il y a plusieurs type de PPA, que vous pouvez créer :
  * Personel : Vous pouvez créer un PPA dont vous serez le seul gestionnaire.
  * Equipe (team) : Vous pouvez créer une équipe et créer un PPA pour cette équipe. De cette façon, vous pourrez être plusieurs à l'administrer.
  * Projet : Vous pouvez aussi créer un projet, et utiliser aussi le dépot Bazaar et le bugs tracker pour gérer votre projet au complet, comme avec Google Code ou SourceForge. Vous pourrez ainsi gérer un PPA avec votre équipe.

===== Création du paquet source =====

Vous aller devoir préparer les sources du paquets à envoyé à Launchpad.

La procédure est celle de la création d'un paquet classique : [[tutoriel:creer_un_paquet#creation_du_paquet_source|Création d'un paquet source]].

En résumé :

Commencez par récupérer les sources de FreetuxTV, et les extraire : 

<code>
wget http://freetuxtv.googlecode.com/files/freetuxtv-0.5.0.tar.gz
</code>

Renommez l'archive **tar.gz** en **orig.tar.gz** comme ceci (très important) (avec le « _ » à la place du « - » d'origine) :

<code>
mv freetuxtv-0.5.0.tar.gz freetuxtv_0.5.0.orig.tar.gz
</code>

Extraire l'archive et aller dans le répertorie crée :

<code>
tar xvzf freetuxtv_0.5.0.orig.tar.gz
cd freetuxtv-0.5.0
</code>

Créer le squelette du paquet sources :

<code>
dh_make -e votreaddresse@email.tld
</code>

Editer les fichiers suivant dans le dossier **debian** qui a été crée :

  * **changelog** : Mettez à jour les informations du logiciel, la version du paquets et la distribution, le détail de la modification (par rapport au paquet précédent) et les informations de l'empacteur (vous) :

<code>
freetuxtv (0.5.0-0ubuntu1) lucid; urgency=low

  * Initial release

 -- Prenom NOM <votreaddresse@email.tld>  Tue, 20 Jul 2010 23:20:08 +0200
</code>


<note important>
Le n° de version à mettre dans le changelog est composé suivant cette norme :
<upstream_version>-<debian_version>ubuntu<ubuntu_version>
  * upstream_version : la version du logiciel (ici 0.5.0)
  * debian_version : la version du paquet chez debian (le paquet n'existe pas chez debian donc 0)
  * ubuntu_version : la version du paquet chez ubuntu (on fait la première version de notre paquet donc 1)
</note>


  * **copyright** : Mettez à jour les noms d'auteurs et le type de licence :

<code>
This package was debianized by Prénom NOM <votreaddresse@email.tld> on
Tue, 20 Jul 2010 23:20:08 +0200.

It was downloaded from http://code.google.com/p/freetuxtv/

Upstream Author(s): 

    Prénom NOM <votreaddresse@email.tld>

Copyright: 

    Copyright (C) 2010 FreetuxTV
       AUTEUR <adresseauteurs@email.tld>

License:

    GNU General Public License v3

The Debian packaging is (C) 2010, Prénom NOM <votreaddresse@email.tld> and
is licensed under the GPL, see `/usr/share/common-licenses/GPL'.

# Please also look if there are files or directories which have a
# different copyright/license attached and list them here.
</code>

  * **control** : Mettez à jour les dépendances requises pour compiler votre paquet et les informations sur le programme. Pour FreetuxTV on a :

<code>
Source: freetuxtv
Section: video
Priority: extra
Maintainer: Prénom NOM <votreaddresse@email.tld>
Build-Depends: vlc, libatk1.0-0 (>= 1.20.0), libc6 (>= 2.3.6-6~), libcairo2 (>= 1.2.4), libcurl3 (>= 7.16.2-1), libdbus-1-3 (>= 1.0.2), libdbus-glib-1-2 (>= 0.74), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.2.1), libglib2.0-0 (>= 2.16.0), libgtk2.0-0 (>= 2.12.0), libnotify1 (>= 0.4.4), libnotify1-gtk2.10, libsqlite3-dev, libpango1.0-0 (>= 1.14.0), libsqlite3-0 (>= 3.4.2), libvlc0-dev, libnotify-dev, libgtk2.0-dev, libdbus-glib-1-dev, libglib2.0-dev, libcurl4-openssl-dev, libvlc0 (>= 0.8.6), libvlc0 (< 0.9.0), libxml2 (>= 2.6.27), debhelper (>= 5), autotools-dev, intltool, libtool
Standards-Version: 3.7.2
Homepage: http://code.google.com/p/freetuxtv/

Package: freetuxtv
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Internet television channels player
 Watch TV on your PC from free WebTV channels or with your ISP television service.
</code>

Une fois que tout est OK, on contruit le paquet source afin de l'uploader :

<code>
debuild -S -sa
</code>

===== Envoi des sources pour la construction d'un paquet ====

Une fois le paquet source crée, il ne nous reste plus à l'uploader sur le serveur de Launchpad. A la fin de l'envoi vous recevrez un mail (à celle indiquer dans le changelog) pour vous indiquez si la création du paquet est accepté ou non.

Il existe plusieurs méthodes :

==== Envoi par FTP ==== 

Créer un fichier **~/.dput.cf**, avec comme contenu :

<code>
[ppa_freetuxtv]
fqdn = ppa.launchpad.net
method = ftp
incoming = ~freetuxtv/freetuxtv/ubuntu/
login = anonymous
allow_unsigned_uploads = 0
<code>

**incoming** représente la racine du chemin d'accès à votre ppa sur le serveur de launchpad (pour FreetuxTV, le chemin est http://ppa.launchpad.net/freetuxtv/freetuxtv/ubuntu/)

Puis pour envoyer le paquet, il faut utiliser la commande dput, sur le fichier changelog.

<code>dput ppa_freetuxtv freetuxtv_0.5.0-0ubuntu1_source.changes</code>

Le deuxième paramètre correspond au nom de la configuration dans le **~/.dput.cf**.

==== Envoi direct avec dput ====

Il suffit d’exécuter la commande suivante (ne fonctionne que sur les distribution récente) :

<code>
dput ppa:freetuxtv/freetuxtv freetuxtv_0.5.0-0ubuntu1_source.changes
</code>

===== Mise à jour d'un paquet =====

Après avoir réussi l'intégration du premier paquet, vous avez aussi la possibilité de facilement de mettre à jour la version d'un logiciel.

Admettons que la version 0.5.1 de FreetuxTV sorte.

Tout d’abord, configurez le dépôt de votre PPA sur votre machine pour l'utiliser avec Synaptic.

<code>
deb http://ppa.launchpad.net/freetuxtv/freetuxtv/ubuntu lucid main
deb-src http://ppa.launchpad.net/freetuxtv/freetuxtv/ubuntu lucid main
</code>

Ensuite, récupérer les sources du paquets de la version courante dans les dépôts (0.5.1) :

<code>
apt-get source freetuxtv
</code>

Ceci permet de récupérer la dernière version du changelog et du fichier control.

Puis les sources de la nouvelle version de FreetuxTV et preparer la comme la premier version :

<code>
wget http://freetuxtv.googlecode.com/files/freetuxtv-0.5.1.tar.gz
mv freetuxtv-0.5.1.tar.gz freetuxtv_0.5.1.orig.tar.gz
tar xvzf freetuxtv_0.5.1.orig.tar.gz
cd freetuxtv-0.5.1
</code>

La différence est que au lieu de régénérer le squelette on va se baser sur celui de de la version précédente :

<code>
cp -r ../freetuxtv-0.5.0/debian .
</code>

Et on met à jour le numéro de version :

<code>
dch -v 0.5.1-0ubuntu1
</code>

Le change log resemble alors à ça :

<code>
freetuxtv (0.5.1-0ubuntu1) lucid; urgency=low

  * Updating to upstream version 0.5.1

 -- Prenom NOM <votreaddresse@email.tld>  Thu, 22 Jul 2010 22:30:20 +0200

freetuxtv (0.5.1-0ubuntu1) lucid; urgency=low

  * Initial release

 -- Prenom NOM <votreaddresse@email.tld>  Tue, 20 Jul 2010 23:20:08 +0200
</code>

Si les dépendances ont changé, n'oublier pas de mettre à jour le fichier **control**.

Enfin on fini la construction du paquet :

<code>
debuild -S -sa
</code>

Il ne reste plus qu'a l'uploader.

===== Ré-intégrer un paquet dont la construction a échoué =====

Imaginons maintenant que la construction de votre paquet ait échoué, par exemple à cause d'une dépendance non satisfaite.

Il suffit de modifier les sources du paquets et de mettre à jour la version.

Lancer la commande suivante pour modifier le changelog :

<code>
dch -i
</code>

La commande met à jour le numéro de version pour avoir quelque chose comme ça :

<code>
freetuxtv (0.5.1-0ubuntu2) lucid; urgency=low

  * Updating to upstream version 0.5.1

 -- Prenom NOM <votreaddresse@email.tld>  Thu, 22 Jul 2010 22:30:20 +0200

freetuxtv (0.5.1-0ubuntu1) lucid; urgency=low

  * Updating to upstream version 0.5.1

 -- Prenom NOM <votreaddresse@email.tld>  Thu, 22 Jul 2010 22:30:20 +0200

freetuxtv (0.5.0-0ubuntu1) lucid; urgency=low

  * Initial release

 -- Prenom NOM <votreaddresse@email.tld>  Tue, 20 Jul 2010 23:20:08 +0200
</code>

Notez que le c'est le ubuntu_version qui a été incrémenter, pour indiqué qu'on a fait une nouvelle version du paquet pour Ubuntu.

Ensuite, corrigez alors vos fichiers posant problème comme le fichier **control**.

Puis une fois que tout est OK, reconstruisez le paquet source pour l'uploader :

<code>
debuild -S -sa
</code>

===== Conclusion =====

Voila, vous savez maintenant administrer un PPA et créer des paquets sur celui ci !

===== Problèmes connus=====

Aucun.

===== Voir aussi =====

  * **(en)** [[https://help.launchpad.net/YourAccount/ImportingYourPGPKey|Importer sa clé]]
  * **(en)** [[https://wiki.ubuntu.com/PackagingGuide/Complete|Ubuntu Packaging Guide]]

----
//Contributeurs principaux : [[:utilisateurs:SaiyanRiku]].//
